Просмотр полной версии : проверка формы на изменение полей, кроме одного!
Привет всем!
Есть такой код:
var form = new Ext.FormPanel({
id: 'form_id',
url: 'curl',
frame: true,
monitorValid: true,
trackResetOnLoad: true,
items: [
],
listeners: {
clientvalidation: function(form, valid){
if (form.getForm().isDirty())
console.log('DIRTY!!!');
}
}
});
проверяющий не изменялись ли какие поля формы. А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это? Выставлять для формы form.dirty=false не получается.
Спасибо за Ваше драгоценное время.
А есть поле формы(комбобокс), которое не должно учитываться при проверке формы. Как сделать это?
allowBlank/preventMark/validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox)?
нет, совсем не то...
А чем Вас предложенные варианты не устроили? Тот же validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox&member=validator)? Повесьте на него функцию возвращающую true...
я повесил, не срабатывает:
validator: function(){
return true;
},
Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCm p('combo_id'));
то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?
я повесил, не срабатывает
Но функция, как таковая, хоть дергается? Поставьте брякпоинт на
validator: function(){
==> return true;
},
Попадаем?
Я нашел, что если после изменения значения в combo выполнить
Ext.form.TextField.superclass.reset.call(Ext.getCm p('combo_id'));
то он становится валидным. Думаю привяжу его к событию onselect. ??? Как Вы на это смотрите?
Да ректально как-то это, IMHO... Должно быть все просто как арбуз: операция довольно-таки довольно тривиальная (исключить контрол из валидирования)... Такие извраты...
заходит в тело функции. все ок.
xtype: 'container',
layout: 'column',
items: [
{
xtype: 'combo',
valueField: 'id',
id: 'combo_id',
width: 140,
displayField: 'action_name',
triggerAction: 'all',
selectOnFocus:true,
hiddenName: 'actions',
validator: function(){
return true;
},
store: new Ext.data.JsonStore({
autoLoad: true,
url: 'url',
fields: ['id','action_name'],
root: 'rows',
listeners: {
load: function(){
Ext.getCmp('combo_id').setValue(1);
}
}
})
}
Дык, получается, помог validator (http://dev.sencha.com/deploy/dev/docs/?class=Ext.form.ComboBox&member=validator)?
нет. clientvalidation показывает, что isDirty!
Сделал так:
xtype: 'container',
layout: 'column',
items: [
{
xtype: 'combo',
valueField: 'id',
id: 'combo_id',
width: 140,
displayField: 'action_name',
triggerAction: 'all',
selectOnFocus:true,
hiddenName: 'actions',
store: new Ext.data.JsonStore({
autoLoad: true,
url: 'url',
fields: ['id','action_name'],
root: 'rows',
listeners: {
load: function(){
Ext.getCmp('combo_id').setValue(1);
Ext.getCmp('combo_id').originalValue = 1;
}
}
}),
listeners:{
select: function(){
Ext.getCmp('combo_id').originalValue = Ext.getCmp('combo_id').getValue();
}
}
основываясь на вот этом http://www.delphifaq.com/faq/javascript/extjs/f3463.shtml
dp_maximk
11.04.2011, 13:24
Нашел более красивый способ :)
items: [
{
xtype: 'combo',
valueField: 'id',
.....
isDirty: function() { return false }
}
Нашел более красивый способ :)
items: [
{
xtype: 'combo',
valueField: 'id',
.....
isDirty: function() { return false }
}
Круто :) Спасибо :)
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot